Universal remote control with function synthesis

ABSTRACT

The universal remote control comprises: light emitting circuitry; driver circuitry coupled to the light emitting circuitry; a microprocessor including a CPU coupled to the driver circuitry, structure, such as a keyboard, coupled to the CPU for communicating &#34;code signal generation sequences&#34; including a &#34;code generate command&#34; signal followed by a &#34;code setting&#34; signal to the CPU, a memory for storing information therein coupled to the CPU, program instructions stored in the memory, and, signal determining and function code creating program and circuitry associated with the memory and the CPU for determining when a &#34;code signal generation sequence&#34; has been received and for using the &#34;code setting&#34; signal of the sequence received to create a function code, comprising, a specific IR blink code, defined by a series of infra-red &#34;light on-light off&#34; pulses, defining a code signal for causing a controlled apparatus to execute a specific function, e.g., &#34;volume up&#34;, and for energizing the driver circuitry to cause the light emitting circuitry to emit the specific series of infra-red &#34;light on-light off&#34; pulses defining the specific code signal to the controlled apparatus.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.07/913,523 filed on Jul. 14, 1992, (now abandoned) which is acontinuation-in-part of U.S. application Ser. No. 07/586,957 filed onSep. 24, 1990 (now abandoned in favor of continuation application Ser.No. 08/093,512 filed on Jul. 16, 1993) which is a division of U.S.application Ser. No. 07/127,999 filed on Dec. 2, 1987 , now U.S. Pat.No. 4,959,810, which is a continuation-in-part of U.S. application Ser.No. 07/109,336 filed on Oct. 14, 1987 (now abandoned).

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to a universal remote control in whichfunction codes for generating operating code signals to be transmittedby the remote control are synthesized or generated by the operator of orexternal to the remote control by depressing certain keys or buttons onthe remote control identified in an accompanying list, or bytransmitting information to it.

2. Description of the Related Art including information disclosed under37 CFR §§1.97-1.99.

Universal remote controls are typically handheld devices capable ofemitting infrared light modulated with information, which when receivedby equipment capable of processing such information, can control variousfunctions of the equipment. A remote control is commonly calleduniversal if it can send IR signals modulated by the codes pertaining toa wide variety of equipment, usually manufactured by differentcompanies.

Presently, universal remote controls are of two principal types:learning, wherein the user can "teach" the universal remote controlfunctions emitted by an existing "native" remote control; andpre-programmed, wherein the universal remote control is manufacturedwith codes to control a variety of equipment already in its memory. Oneexample of a learning remote control is disclosed in the Ehlers U.S.Pat. No. 4,626,848 and one example of a pre-programmed remote control isdisclosed in the Rumbolt et al U.S. Pat. No. 4,841,368.

A disadvantage of the learning remote control is that the user mustpossess a teaching remote control in order to program it, the teachingprocess is often cumbersome and confusing to the user, and there existso many different IR modulation schemes that it is difficult to create ahandheld device capable of "learning" them all.

A disadvantage of the pre-programmed remote control is thatmanufacturers are continuously devising new coding schemes and addingnew functions to existing coding schemes. Pre-programmed universalremote controls whose information is permanently stored in ROM can thusbecome obsolete. Also, because the amount of memory available in anypractical product is finite, a typical pre-programmed remote controlwill contain only a subset of the codes currently in use at the time ofits manufacture.

One solution to the inability to add codes to a ROM-based pre-programmedremote control is to provide a writable non-volatile memory in theremote control, along with an information channel, such as a serialport, via which new codes can be "downloaded" to the remote control.Just such a remote control is disclosed in the Darbee et al U.S. Pat.No. 4,959,810. However, such an "upgradeable" remote control requiresattachment to a source of new programming, such as a computer or modemlink to a remote computer.

The present invention describes a method of endowing a remote controlwith the capability of sending control functions that are not actuallystored in its memory, whether by learning, pre-programming, orupgrading.

SUMMARY OF THE INVENTION

According to the present invention there is provided a universal remotecontrol comprising: light emitting circuitry; driver circuitry coupledto the light emitting circuitry; and, a microprocessor including a CPUcoupled to the driver circuitry, structure, such as a keyboard, coupledto the CPU for communicating "code signal generation sequences"including a "code generate command" signal followed by a "code setting"signal to the CPU, a memory for storing information therein coupled tothe CPU, program instructions stored in the memory, and signaldetermining and function code creating program and circuitry associatedwith the memory and the CPU for determining when a "code generationsequence" has been received and for using the "code setting" signal ofthe sequence received to create a function code signal comprising aspecific IR blink code defined by a specific series of infra-red "lighton-light off" pulses which define bits of a byte defining the functioncode signal for causing a controlled apparatus to execute a specificfunction, e.g., "volume up", and for energizing the driver circuitry tocause the light emitting circuitry to emit a specific series ofinfra-red "light on-light off" pulses defining the specific functioncode signal to be sent to the controlled apparatus.

Further according to the present invention there is provided a methodfor operating a remotely controlled apparatus using a remote control ofthe type described above, the method comprising the steps of: causing a"code generate command" signal to be generated to initiate code signalgeneration; supplying the "code generate command" signal to the CPU;causing a "code setting" signal to be generated for creating a specificfunction code; supplying the "code setting" signal to the CPU;generating with the program instructions the bits of a byte of aspecific function code for generating a specific function code signalcomprising an IR blink code of bits defined by a specific series ofinfra-red "light on-light off" pulses; and, transmitting the specificseries of infra-red "light on-light off" pulses defining bits of a bytedefining the function code signal to the controlled apparatus to causethe controlled apparatus to perform a specific function, e.g., "volumeup".

An analogy can be made with musical instruments. Whereas pressing a keyon a piano will "send" a piano note, pressing a key on a musicalsynthesizer will "send" a note that could sound like almost anything.The piano sounds like a piano because of the fixed (read-only) nature ofits construction. The variability of the musical synthesizer is due tothe ability of the user to change its settings and thereby thecomponents from which the sound is constructed. The sound is synthesizedfrom basic principles, such as waveform, frequency, attack, decay andother attributes described by parameters input by the user.

Likewise, it is possible to allow the user of a remote control tospecify the parameters for the type of code he desires to send in orderto control equipment. These parameters might include subcarrierfrequency and duty cycle, modulation scheme, preamble structure, prefixdata, function data, and code repetition protocol.

Because users of typical consumer remote controls cannot be expected toknow the technical parameters of the codes required by their equipment,the remote control of the present invention provides means and a methodfor users of a remote control to set up a synthesizer remote controlwithout such prior knowledge. Such a remote control constructedaccording to the teachings of the present invention can:

1. send codes which the remote control has not been pre-programmed ortaught to send,

2. be manufactured without any settings, but can be customized toemulate any of a wide range of existing remote controls,

3. be customized by the user in terms of what each key on the remotecontrol will do.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a front perspective view of one universal remote controlconstructed according to the teachings of the present invention.

FIG. 2 is an exploded perspective view of the remote control shown inFIG. 1.

FIG. 3 is a plan view of the circuit board assembly mounted inside theremote control viewing the remote control from the back side thereofwith a back cover panel removed.

FIG. 4 is a block diagram of the operating circuitry in the remotecontrol.

FIGS. 5A & 5B are a detailed schematic circuit diagram of the operatingcircuitry shown in FIG. 4.

FIG. 6 is a front plan view of the remote control shown in FIG. 1 andshows the various pushbuttons or keys of the remote control.

FIG. 7 is a flow chart of a direct-entry quick set procedure followed inusing this remote control.

FIG. 8 is a flow chart of a method for generating an infrared code.

DESCRIPTION OF THE PREFERRED EMBODIMENT

Referring now to FIG. 1 in greater detail, there ie illustrated thereina universal remote control 10 constructed according to the teachings ofthe present invention.

As shown, the remote control 10 includes a housing 11 including an upperhousing member 12 having a base panel 14, and a lower housing member 16.An overlay face panel 18 is positioned over the base panel 14.

The two panels 14 and 18 have openings 22 and 24 therethrough forreceiving elastomeric pushbuttons 25, all of which extend from and arefixed to or integral with an elastomeric body panel 26 is shown in FIG.2.

The pushbuttons 25 are arranged in rows and columns and are identifiedas follows on the overlay face panel 18:

    ______________________________________    VCR 1      Cable       TV         Power    VCR 2      CD          DO 1       DO 2    Rec        TV . VCR    Stop       Pause    Rew        Reverse     Play       Fast Fwd                                      Mute    1          2           3          Vol Up    4          5           6          Vol Dn    7          8           9               0           Enter      CH Up                           Recall     CH Dn    DO    A          C           E          G    B          D           F          H    ______________________________________

This arrangement is shown in FIG. 6 and the manner in which thesepushbuttons 25 are utilized in operating the remote control 10 will bedescribed in greater detail in connection with the description of FIG.7.

At a top or forward end 28 of the remote control 10, there is providedan opening 30 for three light emitting diodes, LED 1, LED 2 and LED 3.The opening 30 is covered by an infrared-transparent lens 31. Also,provided on a top surface 32 of the upper housing member 12 of thecontrol device 10 is a light emitting diode, LED 4, by whichinformation, in the form of red and green blink codes, is communicatedto the user of the remote control 10.

FIG. 2 is an exploded view of the components of the remote control 10.As shown, the remote control 10 includes the overlay face panel 18 withpushbutton-receiving, generally rectangular openings 22, the upperhousing member 12 with base panel 14 having a plurality of generallyrectangular, pushbutton receiving openings 24, the elastomeric bodypanel 26 having pushbuttons 25 extending from an upper surface 34thereof, a printed circuit board 36 having conductive switches 38 on anupper surface 40 thereof and operating circuitry 42 (FIG. 3, 4, 5A and5B) mounted on the underside 43 thereof, the lower housing member 16, acover 44 for a battery compartment 45 (FIG. 3, 4, 5A and 5B) forreceiving batteries 46 (FIG. 4) for the circuitry 42 of the controlremote control 10, and the infrared-transparent lens 31.

It will be noted that the base panel 14 of the upper housing member 12has pushbutton openings 24 completely across each one of fourteen (14)rows across and four (4) columns down. However, not all of theseopenings or holes 24 have pushbuttons 25 extending therethrough, asnoted by the lesser number of pushbutton-receiving openings 22, in theoverlay face panel 18. Likewise, the body panel 26 initially haspushbuttons 25 arranged completely across the upper surface 34 infourteen (14) rows across and fourteen (14) columns down.

The printed circuit board 36 has conductive switches 38 aligned witheach one of the pushbuttons 25 so that more switches 38 are providedthan may be necessary for this particular control remote control 10.

The availability of additional pushbutton openings 24 in the base panel14 will enable the control remote control 10 to be modified as necessaryby the addition of further pushbuttons 25 to perform numerous otherfunctions as called for.

This mechanical construction of the upper and lower housing members 12and 16 and the panels 14 and 18 and circuit board 36 enable the controlremote control 10 to be modified to include additional circuits in theoperating circuitry 42 and pushbutton switches 25 for performingadditional functions, if desired. In this respect, overlay face panel 18is easily replaceable to modify the remote control 10 to include more orless pushbuttons 25 and associated switches 38.

Referring now to FIG. 3, there is illustrated therein the operatingcircuitry 42 of the control remote control 10 which includes batteries46 (FIG. 4) mounted in the compartment 45 for providing power for thecircuitry 42 and a lithium battery 52, which backs up a memory 54. Acentral processing unit (CPU) 56, is coupled through a latch 58 to thememory 54. Three LEDs, LED 1, LED 2, and LED 3 are coupled to thecircuitry 42 for communication with the apparatus to be controlled. Allelements of the circuitry 42 are mounted on the circuit board 36 mountedin the upper housing member 12. A further LED, LED 4 is coupled to CPU56 for communication with the user of the remote control 10 as will bedescribed in greater detail below.

A block schematic circuit diagram of the operating circuitry 42 is shownin FIG. 4 and includes CPU 56, the infrared light emitting diodes, LED1, LED 2, and LED 3 coupled to the CPU 56, serial input/output ports 60of CPU 56, the RAM 54 coupled to CPU 56 and backed up by lithium battery52 and a 4×14 keyboard 61 coupled to CPU 56. The four AAA batteries 46are also shown.

FIGS. 5A and 5B are a detailed schematic circuit diagram of theoperating circuitry 42. The operating circuit 42 includes the centralprocessing unit 56, the latch 58, the random access memory 54 and LED 1,LED 2, LED 3 and LED 4.

The operating circuitry also includes several subcircuits. One of thosesubcircuits 62 (FIG. 5B) includes the keyboard 61 having pushbuttons 25,each of which is connected to a port 63 of the CPU 56 shown in FIG. 5Band can be referred to as the keyboard circuit 62. The X's in FIG. 5Bindicate the pushbuttons 25 and when one of those pushbuttons X ispressed, current flows through a resistor in a column line, e.g., whenbutton 25' is pressed current flows through resistor 64 in column line138 going to the button or key 25'. That raises the voltage on a supplyline VCC to the CPU 56 of the microprocessor.

Accordingly, whenever a button 25 is pressed, it will increase thevoltage on line VCC which initiates a switching process in a wake upcircuit 70 for "waking up" or energizing the CPU 56 in the mannerdescribed below.

In addition to the keyboard circuit 62 and the wakeup circuit 70, thesubcircuits include a reset circuit 74, and a write protect circuit 78.

When the voltage on line VCC goes up, a signal is passed throughcapacitor 102, to the base of a transistor 104 in the wake up circuit70. This turns on the transistor 104 which in turn turns on transistor106 This turning on of the transistors 104 and 106 will bring voltage online VCC to the full DC voltage of about 51/2 volts. When the voltage online VCC reaches 51/2 volts, the CPU 56 begins to operate.

When operating, the CPU 56 establishes a signal on line ALE 108 which ispassed through a resistor 110 and filtered by capacitor 102. Once theALE signal is established, it causes a voltage to be generated at thebase of transistor 104, maintaining transistor 104 turned on, which inturn maintains transistor 106 turned on, thus enabling the CPU 56 tocontinue to run. The CPU 56 can turn itself off by executing a HALTinstruction which causes the ALE signal to cease, thus turning offtransistors 104 and 106 and removing power via line VCC to the CPU 56.

It is to be noted that the wake up circuit 70 can be activated bydepression of a key or button 25 or by an input signal at serial port 3(FIGS. 3 and 5B), coupled to an input port 112 of the CPU 56.

The circuit elements described above form the wakeup circuit 70 foractivating the operating circuitry 42 of the remote control 10. Thiscircuit uses substrate static-protection diodes 114 in a CMOS chipcoupled to the keyboard 61. With this arrangement, source current issupplied to transistor 104 via line VCC when a key or pushbutton 25 isdepressed.

The memory 54 is connected to the lithium battery 52 and, when theremote control 10 is not being used, draws about 20 nanoamps from thebattery 52, which gives the remote control 10 a shelf life between 5 and10 years. A backup capacitor 116 is coupled to the memory 54 and has (at20 nanoamps) a discharge time of about 10 minutes, providing ample timeto change (if necessary) the battery 52 without losing the instructionsand data stored in the memory 54. Capacitor 116 is kept charged bybattery 46 through diode 117 when the remote control 10 is operatingand, at other times, by battery 52 through diode 118.

After the CPU 56 has been powered up, or awakened, the CPU 56 makes ascan of row lines 121-128 to the keyboard 61 by sequentially forcingeach line 121-128 low and then polling the other lines to find out whichbutton 25, such as button 25', has been pressed. As a result ofpushbutton 25' being pressed, a low impressed upon row line 121 willcause a low on column line 128 and that will result in the row line 128being low.

The CPU 56 first sets row line 121 low and then begins scanning,starting with the row line 122, for another row line having a lowvoltage thereon and by finding the row line with the low voltage, in theabove example, row line 128, the CPU 56 knows that button 25' at theintersection of row line 128 and column line 138 has been depressed.

If the CPU 56 had not found a low on another row line, such as row line128, after having set line row 121 low, line 121 is returned to itsprevious value and row line 122 is then set low, and the scan continueduntil a low row line is found to identify which button 25 has beendepressed.

When the CPU 56 determines which pushbutton 25 has been depressed theCPU 56 will then know what function is to be carried out.

It is to be noted that the keyboard circuit 62 is uniquely designed toinclude only eight (8) row lines 121-128 and eight (8) column lines131-138 each having a resistor 64 and a current directing diode 114therein and each being arranged across the row lines 131-138 so that 56switch positions are provided with only eight (8) lines.

All memory cycles exercised must involve the latch 58 because the CPU 56has its data bus multiplexed with the lower 8 bits of the address bus onlines 141-148.

Coming out of the CPU 56 to the latch 58, is a group of nine (9) lines108 and 141-148. One of the lines, line 108, carries the ALE signal. Theeight (8) lines 141-148 between the latch 58 and the CPU 56 are themultiplexed data and address bus lines. These lines comprise the lower 8bits of the address bus. A group of multiplex lines are identified withreference numeral 150. Five more lines 151-155 comprise the upper fivebits of the address bus, making a total of 13 bits of address.

An inverting OR gate 156 having an output line 158 and two input lines160 and 162 together with ground line 164 are coupled between the CPU 56and the memory 54. The line 158 defines an output enable for the memory54.

Accordingly, when the CPU 56 wants to do a read, it actuates either ofthe two input lines 160 or 162 going into the OR gate 156. Line 160 is aPSEN line for telling the memory 54 that it is to be enabled to receivedata and line 162 is a Read Output line to tell the memory 54 that theCPU is going to read the information stored in the memory 54. With ORgate 156 the two lines and functions are combined on one line 158. Inother words, the CPU 56 tells the memory 54, through the OR gate 156,that it wants to read information stored in the memory 54.

The circuitry 42 also includes the write protect circuit 78 which hasthe double duty of being a low battery indicating circuit. The circuit78 includes a resistor 170, a transistor 171, two resistors 172, 173 anda Zener diode 174 connected as shown.

A write enable line 176 is connected between the transistor 171 and theCPU 56.

When the CPU 56 desires to write information into the memory 54, itplaces the address on the address bus lines 141-148 and 151-155, strobesthe lower 8 bits of the address bus on lines 141-148 into the latch 58using ALE line 108, places the information on the data bus lines141-148, and then brings the write enable line 176 low.

When the write enable line 176 goes low, unless the transistor 171 isturned on by virtue of the battery voltage being more than 4.3 volts, aline 178 going into the memory 54 at the collector 180 of the transistor171 (which is the "write enable" for the memory 54), is prevented fromgoing low, maintaining the memory "Write Protected". This condition alsois created when the battery 46 is low. The "write enable" line 176 alsofunctions as a low battery detector because, during execution of theprogram, a check is made to see whether writing to the memory 54 isenabled. If it is not, this shows that the batteries are weak and asignal is sent to the user by flashing the red LED, of LED 4, 5 times.

Note that LED 4 includes a red LED and a green LED incorporated into onepackage so that when both LEDs are turned on, a yellow light is emitted,making LED 4 a tricolor LED. Such tricolor LED 4 enables the remotecontrol 10 easily to communicate to the user by way of the color, numberand sequence of light blinks.

A clock circuit 182 including a crystal resonator is coupled to the CPU56.

The three infrared-emitting LEDs, LED 1, LED 2, and LED 3 are connectedin the circuitry 42 as shown.

The reset circuit 74 includes two resistors and a capacitor connected asshown and coupled between line VCC and a reset line 184.

Deciphered infrared code data for operating various pieces of equipmentof different manufacturers and instructions for generating such code arestored in the memory, such as the RAM 54.

FIG. 7 is a flow chart of the steps initiated by a user in carrying outa direct-entry/quick-set procedure for matching the user's equipment orapparatus to the device 10.

The steps of this procedure include:

STEP 1. Look up make and model number of the controlled apparatus in atable provided to the user in an instruction booklet.

STEP 2. Model number is found and matched with a series of 8 "R"s and"G"s.

STEP 3. Here the operator presses the desired mode button or key.

STEP 4. Press DO, Enter, Recall. This tells the device 10 to do aQuick-Match.

STEP 5. Next enter the sequence of eight red and green blinks found inTABLE I (set forth below) provided in the instruction booklet. This isdone by pressing Channel Down for "R" and Channel Up for "G".

STEP 6. Here determination is made if a key other than Channel Up orChannel Down was pressed.

STEP 7. In the device 10, the tricolor LED 4 will flash red or greendepending on what button is pushed.

STEP 8. When all eight codes are entered, the program goes on to STEP 9.

STEP 9. Here a check is made to see if the blink code corresponding tothe red/green code is in a table in the RAM 54 of the remote controldevice 10.

STEP 10. If the device 10 has successfully Quick-Matched to thecontrolled apparatus, the LED 4 will flash green twice.

STEP 11. If it did not match, it will flash yellow indicating that codesfor that controlled apparatus are not loaded into the RAM 54.

                                      TABLE 1    __________________________________________________________________________    DEVICE BLINK CODES AND SPECIAL FEATURE BUTTONS    __________________________________________________________________________    Blink Code            A      B       C       D      E      F     G     H    __________________________________________________________________________    TELEVISION SETS    RRRR RRRR            Display                   MTS     Pict+   Pict-  Sleep  TV/Video                                                       Ant   Tone            25 = Col Up                   26 = Col Dn                           27 = Brt Up                                   28 = Brt Dn                                          29 = Hue Up                                                 30 = Hue Dn                                                       31 = Mtx                                                             32 = Reset    RRRG RRRG            Screen Sp Phne/                           AutoOn/ AutoOff/                                          Ant    Stereo            Dn     Print Ctl                           Data Ent                                   Data Clr    RRRG RGRG            Add    Clear    RRRG GRRR            A Ch   Hi Fi    RRRG GRGR            Ant/Aux                   Time/Ch Program TV/VCR    RRRG GGGR            Ant/Aux                   Time/Ch    RRRG GGGG            Pwr On Pwr Off Display Ant    GRRG RRRG            Aux    Last Ch Timer    GRRG RRGG            Fine Up                   Fine Dn L Ctl   R Ctl  OBC    Func  Review                                                             BiLing            25 = Stereo                   26 = TimeFa                           27 = Timer                                   28 = TimeS1                                          29 = TV/AV    GRRG RGRR            Fine Up                   Fine Dn L Ctl   R Ctl  OBC    Func  Review                                                             Biling            25 = Stereo                   26 = TimeFa                           27 = Timer                                   28 = TimeS1                                          29 = TV/AV    GRRG RGGR            Tint R Tint L  Color R Color L                                          Contr R                                                 Contr L                                                       Timer Stereo            24 = SAP                   25 = Reset                           26 = Q/V                                   27 = EXP                                          28 = Disp                                                 29 = Mono                                                       30 = Lock                                                             31 = TV            32 = Ext 1                   33 = Ext 2                           34 = Ant    GRRG GRRG            TV/Video                   Time    GRRG GRGR            TV/Video                   Wide    Lvl Up  Lvl Dn Memory Func  MTC   Stereo            25 = Timer                   26 = 100                           27 = BiLing    GRRG GRGG            10     11      12      13    GRRG GGRR            RF12   Ch Rtn  Str SAP Mono   Timer  T Set TV/CATV                                                             TV/Vid            26 = 100                   27 = Audio                           28 = CCC1                                   29 = CCC2                                          30 = CCC3                                                 31 = CCC4                                                       32 =ContDn                                                             33 = ContUp            34 = Pict                   35 = Reset    GRGG RRRR            Sleep  Review    GRGG RRRG            K      L    GRGG RRGR            SAP    Sleep   TV/Video    GRGG RRGG            Program                   Q Rev   SAP     Sleep  TV Video                                                 Add   Delete    GRGG RGRG            Sleep  St/SAP  TV/Video    GRGG RGGR            11     12      13      14     15     16    GRGG RGGG            K      L    GRGG GRRR            K      L    VIDEO CASSETTE RECORDERS    RRRR RRRR            Nse Cncl    RRGR RRRG            Ant    RRGR RRGR            Ant    RRGR RRGG            Frm Adv                   Slow    Slow Up Slow Dn                                          Srch Fwd                                                 Srch Rev    RRGR RGRR            A      B       C       D      E      F     Slow    RRGR GGGR            Slow    RRGR RGGR            Slow+  Slow-   Eject   CM Skip                                          Program                                                 Input Mode  AM/PM            28 = Shift                   29 = Reset                           30 = Mem/PS                                   31 = SR    RRGR RGGG            Forward                   FlshBack                           Ant     Vol+   Vol-   Reverse                                                       Sp Phne                                                             PC    RRGR GRRR            Ant/Aux    RRGR GRRG            11     12      13      14     15     16    RRGR GRGR            Frm Adv                   Memory  Reset   Chg Time    RRGR GGRR            Pwr On Pwr Off    RRGR GGGG            Slow   Slow Up Slow Dn Set Up Set Dn Timer Clear Display            29 = Frame                   30 = Memory                           31 = Prog                                   32 = Qtr                                          33 = QtrStr                                                 34 = Quick                                                       35 = Remain                                                             36 = Rst            37 = Clock                   38 = APS                           39 = 100    GGRG RRRR            K      L    GGRG RRRG            CFM    Slow    GGRG RRGR            Slow   OSP     Shift L Shift R                                          Slow Dn                                                 Slow Up                                                       St+   St-            28 = Timer    GGRG RRGG            11     12      13      14     15     16    Slow    GGRG RGRR            Slow Dn                   Slow Up Slow    CABLE CONVERTERS    RRRR RRGR            A/B    Add     Delete  Set    Lock   Last Ch    RRRR RRGG            A      B       Event (*)                                   #      Arrow Up                                                 Arrow Dn                                                       AP    Delete            25 = F 26 = K  27 = Learn                                   28 = PGM                                          29 = TCP                                                 30 = Enter    RRRR RGRR            Skew L Skew R  Audio   SAT    Ant East                                                 Ant West    RRRR RGRG            Plus   Minus   Dot     Box    Str    Clear Time  Auth            22 = C/R                   23 = #    RRRR RGGR            Prog   Auth    RRRR RGGG            Auth    RRRR GRRR            Auth   Prog    RRRR GRRG            Plus   Minus   Rcp     *      M1     M2    M3    M4    RRRR GRGR            A-B    Dot 1   Dot 2   *      Am     Dm    F    RARR GRGG            Arrow Up                   Arrow Dn    COMPACT DISK PLAYERS    RRRR RRRR            CD Fwd CD BckUp    GRRG GRGG            Fwd Indx                   Rev Indx                           Repeat  Memory    __________________________________________________________________________     *For numbered functions, press "DO" then the twodigit number.

Referring now to FIG. 8 there is illustrated therein a method for usingthe remote control 10 described above for enabling an operator to createfunction codes for generating operating code IR signals to betransmitted by the remote control 10 for operating a controlledapparatus such as a television, VCR, cable box, etc.

Such function codes and operating code IR signals generated therebycontain data needed to operate a control device. In this respect, thereare two distinct aspects to a typical remote control code:

1. The Protocol

Information sent to the receiving equipment is formatted in a particularpattern, or protocol. One piece of equipment will normally be expectingone protocol which it can understand, and it will reject any others.Therefore, it will not be falsed by control codes intended for otherequipment, or by noise. Such protocols have evolved in the marketplaceby the development of various hardware chips which have beenincorporated into single-purpose "native" remote controls specific to apiece of equipment. Universal remote controls are typicallysoftware-driven microprocessor-based remote controls, where softwareroutines are used to emulate the various protocols embodied in thehardware chips. Such a software emulation of a protocol can be definedas an "exec" (short for executor).

2. The Data

Execs send data. The amount of data sent by a typical handheld remotecontrol is small, because the number of keys on a handheld remotecontrol is necessarily limited. In particular, one eight-bit byte ofdata corresponding to a keypress would allow 256 distinct keys on thehandheld remote control. Needless to say, a 256-key handheld remotecontrol would be cumbersome to use. In particular, six bits (allowing 64keys) is typical.

So that a single protocol can be used with a variety of equipment, thereis often attached additional information, typically one or two bytes,which can be defined as a "prefix".

If an operator knows what exec to use, what prefixes to send, and whatthe keypress data is, the operator has sufficient information for agiven piece of equipment to cause a control device to hear and respondto the command sent by the operator from the remote control.

Normally, if an operator wants to make a preprogrammed remote controlthat can send as many functions as are known by those who preprogramremote controls, the operator needs to have a list of those functions.If the operator doesn't fully understand the coding scheme for the datathat is being sent, the remote control needs to have some inefficientstorage means for storing all of the code data for those functions. Ifthe operator understands or has "cracked" the code, the operator canefficiently store the list of those functions. In practice, the operatorcan use one byte (or less) of code per function if the operator has"cracked" the code.

For real codes of one byte or less, there can be at least two hundredfifty-six codes for a given receiving controlled apparatus.

Some codes are necessary for the operation of a controlled apparatus. Anexample is Channel Up and Channel Down for a TV. If the operator had"cracked" the codes for that TV, the operator would have to devote abyte of storage for each function that TV could respond to.

Now, it is desirable that the number of keys on a remote control be assmall as possible so that the user will not become confused by thecomplexity of the handset. Also, on a universal remote control, there isa labeling problem, in that keys need to do different things dependingon what kind of controlled apparatus it is controlling at the time. As aresult, on handheld remote controls, there are not enough keys to sendall of the function codes for complex controlled apparatus.

If there are fewer keys than desired functions, there is no other choicethan to require multiple keystrokes of the available keys to send theadditional (or "extended") function codes. For example, a remote controllacking "Color-Up" and "Color-Down" keys might require the user to type"Shift" (or some equivalent "escape" key) and key or keys "27" to sendColor-up and key or keys "Shift 28" to send Color-Down.

Inside of such a remote control, there must be firmware or software formapping "Shift 27" to a STORED Color-Up data byte and the "Shift 28" toa STORED Color-Down data byte and such bytes for such "extendedfunctions" must be stored in the limited (and expensive) memory of theremote control.

Since function codes differ from device to device (e.g. the code for"color up" on a Sony TV will not typically be the same as the code for"color up" on an RCA TV), such stored data must be repeated for everytype of equipment to be controlled.

With the remote control 10 of the present invention and the operatingprogram and possible lookup tables stored therein, it is not necessaryto use up memory to store such functions. Instead, the remote controlcan accept from the user directly the (typically one) byte that needs tobe sent in the current context to the controlled apparatus. For example,the user can type "Shift 137" for Color-Down and "Shift 078" forColor-Up, as long as there is a one-to-one mapping between what theoperator types on the keyboard and the byte the software needs in orderto send the appropriate infrared function code.

According to the teachings of the present invention, software, includingan operating program, algorithms such as an Executor Algorithm, andfunction code data for generating IR blink codes or a Look Up Table ofsuch function codes are stored in the memory 54 of the remote control10.

Further, a list of encrypted codes is provided in an instruction bookletfor use by an operator in synthesizing or generating desired functioncode data. For example the instruction booklet will have the followingtype of information:

Sony TV, Model XYZ "Color Up" TYPE "DO" followed by "128."

This is an encrypted code which is decrypted or deciphered ordemultiplexed by the remote control 10 hardware and/or software to anumber between 001 and 256 representing a one byte value for generatingan IR blink code, e.g., such as 074 converted to 01001010 for generatingthe appropriate IR LED blink code for causing the Sony TV to effect a"Color Up" function.

Many possible mechanisms exist by which decryption of such a code may beperformed. For example, one such decryption is by the provision of alook up table in the remote control 10, such a table having data of thetype set forth in Table II:

                  TABLE II    ______________________________________    Keystroke   Decrypted Code                             Eight Bit Byte    ______________________________________    001         122          01111010    .           .            .    .           .            .    .           .            .    128         074          01001010    .           .            .    .           .            .    .           .            .    256         221          11011101    ______________________________________

The steps of the routine or protocol stored in the memory 56 forcarrying out the method of the present invention for creating thefunction codes for generating the IR code signals for operating acontrolled apparatus is set forth in FIG. 7. These steps are as follows:

STEP 1. Has a key been depressed?

STEP 2. If a key has been depressed, is it the DO key which is a "codegenerating" or "code generate command"key?

STEP 3. If the DO key has been depressed, at STEP 3 the programdetermines if it is a number key.

STEP 4. At STEP 4 if a number key has been depressed, the programdetermines if it is the 3rd number key.

STEP 5. At STEP 5 the decoder accumulates the key number to create anumber between 0 and 999. STEPS 3, 4 and 5 are repeated until 3 digitshave been pressed.

STEP 6. Here the program decrypts the three digit number entered atSTEPS 3, 4 and 5 from a number between 0 and 999 to a number between 0and 256.

STEP 7. Here the program converts the decrypted number obtained at STEP10 to a one byte value (8 bits of binary data).

STEP 8. At STEP 8 the program operates a pattern generator using anExecutor Algorithm to convert the one byte value into a function codefor generating an IR blink code for a particular function of thecontrolled apparatus and supplies that blink code to an IR LED driver toemit that IR blink code from the remote control 10.

It is to be understood that the "code generate command" can be sentdirectly from a computer to the remote control via a direct connectionto or through a modem connected to the remote control, bypassing thekeys.

From the foregoing description it will be apparent that the remotecontrol 10 and the hardware and software therein together with a list ofcodes in an instruction booklet of the present invention have a numberof advantages, some of which have been described above and others ofwhich are inherent in the invention. Accordingly, the scope of theinvention is only to be limited as necessitated by the accompanyingclaims.

We claim:
 1. A universal remote control comprising:light emitting means;driver circuitry coupled to said light emitting means; and, amicroprocessor including: a CPU coupled to said driver circuitry,communication means, coupled to said CPU, for communicating a "codesignal generation sequence" including a "code generating" or "codegenerate command" signal followed by a "code setting" signal to saidCPU; memory means for storing information therein coupled to said CPU;program instructions stored in said memory means; and, signaldetermining and function code creating means associated with said memorymeans and said CPU (a) for determining when said "code signal generationsequence" has been received by said CPU, (b) for using the "codesetting" signal of the sequence received to create a function codesignal comprising a specific IR blink code that includes a specificseries of infra-red "light on-light off" pulses which define bits of abyte that defines the function code signal for causing a controlledapparatus to execute a specific function, and (c) for energizing saiddriver circuitry to cause said light emitting means to emit the specificseries of infra-red "light on-light off" pulses which define thespecific function code signal to be sent to the controlled apparatus. 2.The remote control of claim 1 wherein said "code setting" signal is athree number code sequence.
 3. The remote control of claim 2 furtherincluding a keyboard and being combined with a list of "code setting"numbers for creating bits of bytes defining different function codeseach including a 3-digit "code setting" sequence for being input throughsaid keyboard into said memory means for enabling said programinstructions to create bits of a byte for one of said different functioncodes for a specific function to be performed by a specific controlledapparatus.
 4. The remote control of claim 1 wherein said CPU of saidmicroprocessor uses said program instructions in said memory means ofsaid microprocessor to decrypt, decipher or decode the "code setting"signal received by said CPU.
 5. The remote control of claim 1 whereinsaid signal determining and function code creating means include analgorithm and a pattern generator for creating and generating the seriesof infra-red "light on-light off" pulses defining the bits of a byte fora specific function code signal.
 6. The universal remote control ofclaim 1 further comprising:a housing; a set of keys forming a keyboardmounted to said housing and including a "code generate command" key andat least one "code setting" key; said light emitting means being mountedto said housing; said microprocessor being mounted in said housing;electrical conductor means for coupling said keys to said CPU; and saidsignal determining and function code creating means including means fordetermining when a "code signal generation sequence" has been receivedby determining when said "code generate command" key has been struck ordepressed, and which "code setting" key(s), if any, are struck ordepressed after the striking of said "code generate command" key.
 7. Theremote control of claim 6 wherein said at least one "code setting" keyincludes three number keys.
 8. A method for operating a remotelycontrolled apparatus using a remote control comprising: signal inputmeans, light signal emitting means, and a microprocessor including aCPU, memory means for storing information therein coupled to the CPU andprogram instructions stored in the memory means and including analgorithm for creating different function code signals, each for causingthe light signal emitting means to emit an IR blink code comprising aseries of infra-red "light on-light off" pulses, defining bits of a bytewhich will cause the controlled apparatus to perform a specificfunction, said method comprising the steps of:causing generation of a"code generate command" signal to initiate code signal generation;supplying said "code generate command" signal to the CPU; causinggeneration of a "code setting" signal for creating a specific functioncode; supplying said "code setting" signal to the CPU; generating withthe program instructions the bits of a byte of said specific functioncode for generating a specific function code signal comprising an IRblink code defined by a specific series of infra-red "light on-lightoff" pulses; and, transmitting the specific series of infra-red "lighton-light off" pulses to the controlled apparatus to cause the controlledapparatus to perform a specific function associated with the specificfunction code signal created.
 9. The method of claim 8 wherein said"code setting" signal is a three number code.
 10. The method of claim 8wherein said "code setting" signal is an encrypted code signal and saidmethod includes the additional step of decrypting, deciphering ordecoding the "code setting" signal to enable the program instructions tocreate the bits of a byte defining said specific function code signal.11. The method of claim 8 wherein said step of causing a "code generatecommand" signal to be generated is accomplished by depressing a "codegenerate command" key on a keyboard of the remote control and said stepof causing a "code setting" signal to be generated is accomplished bydepressing one or more selected "code setting" keys on the keyboard toinitiate code generation.
 12. The method of claim 11 wherein said stepof generating said specific function code signal is accomplished by thedepressing of said one or more selected "code setting" keys.
 13. Themethod of claim 12 wherein said "code setting" keys are number keys. 14.The method of claim 12 wherein said "code setting" keys are three numberkeys.